package ar.edu.utn.frba.disenio.aterrizar;

import java.util.ArrayList;
import com.lanchita.*;

public abstract class Usuario {

	private String nombre;
	private String apellido;
	private String dni;
	private int recargoUsuario;
	private double compras;
	private boolean superOfertas;
	private ArrayList<ArrayList<Vuelo>> busquedas = new ArrayList<ArrayList<Vuelo>>();
	
	Busqueda unaBusqueda = new Busqueda();
	
	public void buscarVuelos(AerolineaLanchita aerolinea, String origen, String destino, String fechaSalida){
		this.getBusquedas().add((unaBusqueda.buscarVuelos(aerolinea, origen,fechaSalida,destino,this))); 
    }
	
	public void buscarVuelos(AerolineaLanchita aerolinea, String origen, String destino, String fechaSalida, String parametroExtra){
		this.getBusquedas().add((unaBusqueda.buscarVuelos(aerolinea, origen,fechaSalida,destino,parametroExtra,this))); 
	}
	
	public void buscarVuelos(AerolineaLanchita aerolinea, String origen, String destino, String fechaSalida, String claseDeAsiento, String ubicacionAsiento ){
		this.getBusquedas().add((unaBusqueda.buscarVuelos(aerolinea, origen, destino, fechaSalida, claseDeAsiento,ubicacionAsiento,this)));
	}
	
	public void comprarAsiento(AerolineaLanchita aerolinea, String codigoAsiento){
		
		try
		{
			AdapterLanchita adapter = new AdapterLanchita(aerolinea);
			Vuelo vuelo = unaBusqueda.buscarVueloParticular(aerolinea, codigoAsiento, this);
			adapter.comprarAsiento(codigoAsiento);
			this.compras = this.compras + Double.parseDouble(vuelo.getValor());
		}
		catch(AsientoErroneoException e){
			System.out.println(e.errorMessage());
		}
		catch(AsientoNoDisponibleException e){
			System.out.println(e.errorMessage());
		}
		
	}

	///// BORRAR //////
	
	public void mostrarVuelosBuscados(){
		
		ArrayList<ArrayList<Vuelo>> busquedas = this.getBusquedas();
		
		for(ArrayList<Vuelo> unaBusqueda : busquedas){
			for(Vuelo unVuelo : unaBusqueda){
				System.out.print(unVuelo.codigo);
				System.out.print(";");
				System.out.print(unVuelo.valor);
				System.out.print(";");
				System.out.print(unVuelo.clase);
				System.out.print(";");
				System.out.print(unVuelo.ubicacion);
				System.out.print(";");
				System.out.print(unVuelo.estado);
				System.out.println();
			}
		}		
	}
	
	//////////
	
	//// Getters y Setters /////
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getDni() {
		return dni;
	}
	public void setDni(String dni) {
		this.dni = dni;
	}
	public int getRecargoUsuario() {
		return recargoUsuario;
	}
	public void setRecargoUsuario(int recargoUsuario) {
		this.recargoUsuario = recargoUsuario;
	}
	public double getCompras() {
		return compras;
	}
	public void setCompras(double compras) {
		this.compras = compras;
	}
	public ArrayList<ArrayList<Vuelo>> getBusquedas() {
		return busquedas;
	}
	public void setBusquedas(ArrayList<ArrayList<Vuelo>> busquedas) {
		this.busquedas = busquedas;
	}
	public boolean isSuperOfertas() {
		return superOfertas;
	}
	public void setSuperOfertas(boolean superOfertas) {
		this.superOfertas = superOfertas;
	}
	
	//////////////////////////////////////////
}
